package game.view;

import game.model.GameModels;

import javax.swing.*;
import java.awt.*;


/**
 * 游戏信息绘制器，遵守观察者模式
 */
class GameTitlePanel extends JPanel {
    /**
     * 构造函数
     *
     * @param models 观察对象
     */
    public GameTitlePanel(GameModels models) {
        super();
        this.models = models;
        super.setPreferredSize(new Dimension(0, 100));
    }

    private final GameModels models; // 观察对象

    /**
     * 绘制面板的内容。
     * 创建 JPanel 后会自动调用一次该方法。
     * 之后如果需要重新绘制，应调用 updateUI() 方法。
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g); // 调用基类的绘制方法，以擦除旧的内容
        Graphics2D g2d = (Graphics2D) g.create(); // 创建 Graphics 的副本。防止绘制时改变 Graphics 原有的参数
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 抗锯齿

        // 设置字体样式, null 表示使用默认字体, Font.PLAIN 为普通样式, 大小为 25px
        g2d.setFont(new Font(null, Font.PLAIN, 25));

        // 绘制文本, 其中坐标参数指的是文本绘制后的 左下角 的位置
        // 首次绘制需要初始化字体, 可能需要较耗时
        g2d.drawString(String.format("游戏得分：%d", models.score), 0, 50);

        g2d.dispose(); // 自己创建的副本用完要销毁掉
    }
}
